import {mergeJSON, isJSON} from '@/form/utils'

export default {
  data() {
    return {
      formConfig: ''
    }
  },
  created() {
    this.formConfig = this.formConfigProvide()
  },
  methods: {
    /**
     * 必须要实现的一个方法
     */
    formConfigProvide() {

    },

    getFormConfig() {
      return this.formConfig
    },

    setFormConfig(formConfig) {
      this.formConfig = formConfig
      // this.merge(formConfig, this.formConfig)
    },
    /**
     *
     * @returns {string}
     */
    getMetadata() {
      return JSON.parse(JSON.stringify(this.formConfig))
    },
    /**
     *
     * @param metadata
     */
    setMetadata(metadata) {
      this.merge(metadata, this.formConfig)
      console.log(this.formConfig)
    },

    getFormData() {
      return this.formData
    },

    setFormData(formData) {
      this.formData = formData
    },
    /**
     * 合并对象
     * @param target
     * @param source
     */
    merge(target, source) {
      mergeJSON(target, source)
    },
    /**
     * 计算出布尔值，并且可以配置默认值
     */
    computeBoolean(value, defaultValue) {
      if (this.isBoolean(value)) return value
      if (this.isEmpty(value)) {
        if (defaultValue) {
          return defaultValue
        } else {
          return false
        }
      }
      return true
    },
    /**
     * 判断是否是 boolean
     */
    isBoolean(value) {
      return typeof value === 'boolean'
    },
    /**
     * 判断是否是 空
     */

    isEmpty(value) {
      if (
        value === 'null' ||
        value == null ||
        value === 'undefined' ||
        value === undefined ||
        value === ''
      ) {
        return true
      } else {
        return false
      }
    },

    /**
     * 判断是否是 对象
     */
    isObject(value) {
      return typeof value === 'object'
    }
  }
}
